import axios from 'axios';
import { ElMessage } from 'element-plus';

// 创建请求实例（带完整协议头）
const request = axios.create({
    baseURL: 'http://localhost:8080/user/subject/english/vocabulary', // 后端基础地址（确保与后端端口一致）
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json;charset=utf-8'
    }
});

// 请求拦截器
request.interceptors.request.use(
    (config) => config,
    (error) => {
        ElMessage.error('请求参数错误');
        return Promise.reject(error);
    }
);

// 响应拦截器
request.interceptors.response.use(
    (response) => {
        const res = response.data;
        // 假设后端返回格式：{ code: 200, data: ..., msg: '' }，非200视为错误
        if (res.code && res.code !== 200) {
            ElMessage.error(res.msg || '操作失败');
            return Promise.reject(res);
        }
        return res.data || res; // 兼容直接返回数据的情况
    },
    (error) => {
        const message = error.response ?
            `请求失败（${error.response.status}）` :
            '网络异常';
        ElMessage.error(message);
        return Promise.reject(error);
    }
);

// 词汇本API（分两步调用）
export const vocabularyApi = {
    /**
     * 第一步：创建词汇本（获取bookId）
     * @param {string} bookName - 词汇本名称
     * @returns {Promise} 后端返回的词汇本对象（包含id）
     */
    createVocabularyBook: (bookName) => {
        return request.post('/book', { bookName }); // 对应后端接口：POST /book
    },

    /**
     * 第二步：向词汇本添加单词
     * @param {Object} data - 请求数据
     * @param {number} data.bookId - 词汇本ID（从第一步获取）
     * @param {Array} data.words - 单词列表
     * @returns {Promise} 后端响应
     */
    addWordsToBook: (data) => {
        return request.post('/book/words', data); // 对应后端接口：POST /book/words
    },

    /**
     * 扩展：获取词汇本列表
     * @returns {Promise} 词汇本列表数据
     */
    getVocabularyList: () => {
        return request.get('/books');
    }
};

export default vocabularyApi;